package com.ph.irp.base.bom.service;

import java.util.List;

import com.ph.irp.dto.BOMBillDetailDTO;
import com.ph.irp.dto.BOMGroupDTO;
import com.ph.irp.dto.BomBillDTO;
import com.ph.irp.model.PBaseBombill;
import com.ph.irp.model.PBaseBombilldetail;
import com.ph.irp.model.PBaseBomgroup;

public interface BOMManageService {
	public List<BOMGroupDTO> getAllBOMGroup() throws Throwable;

	public List<BOMGroupDTO> getAllBOMGroupExcludeBOMGroupID(
			String editBOMGroupID) throws Throwable;

	public void addBOMGroup(String bomGroupCode, String bomGroupName,
			String bomGroupParentID) throws Throwable;

	public List<BOMGroupDTO> getBOMGroupByCodeAndName(String code, String name)
			throws Throwable;

	public PBaseBomgroup getBOMGroupByBOMGroupId(String BOMGroupID)
			throws Throwable;

	public void editBOMGroup(PBaseBomgroup editBOMGroup) throws Throwable;

	public void deleteBOMGroup(String deletedBOMGroupID) throws Throwable;

	public void deleteBOMBill(String deleteBOMBillIDs) throws Throwable;

	public List<BomBillDTO> getBOMBillByBOMGroupID(String bomGroupID)
			throws Throwable;

	public BomBillDTO getBOMBillByBOMBillID(String bomBillID) throws Throwable;

	public List<BOMBillDetailDTO> getBOMBillDetailListByBOMBillID(
			String bomBillID) throws Throwable;

	public List<BomBillDTO> getBOMBillByStateAndCode(String bomBillCode,
			String state, String auditState, String bomGroupID)
			throws Throwable;

	public int getAuditStateByBOMBillID(String useBomBillID) throws Throwable;

	public int getStateByBOMBillID(String useBomBillID) throws Throwable;

	public void setBomBillUsed(String useBomBillID) throws Throwable;

	public void setBomBillAntiUsed(String useBomBillID) throws Throwable;

	public void setBomBillAudited(String useBomBillID,String auditer,String auditDate) throws Throwable;

	public void setBomBillAntiAudited(String useBomBillID) throws Throwable;

	public String getNewestBomBillCode() throws Throwable;

	public void addBOMBill(PBaseBombill bomBill) throws Throwable;

	public void editBOMBill(PBaseBombill editedBOMBill) throws Throwable;

	public int getBOMBillIdByBOMBillCode(String code) throws Throwable;

	public void addBOMBillDetail(PBaseBombilldetail bomBillDatail)
			throws Throwable;

	public void deleteBOMBillDetailByBOMBillID(String bomBillID)
			throws Throwable;
	
	public boolean isAuditedBOMBill(String bomBillID)throws Throwable;
}
